package model;

import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class FilmVerwaltung implements Serializable {
	private static final long serialVersionUID = -2952735933715107252L;

	private Map<String, Datentraeger> datentraegers = new HashMap<String, Datentraeger>();

	public FilmVerwaltung() {
	}

	public FilmVerwaltung addDatentraeger(Datentraeger datentraeger) {
		if (datentraeger == null) {
			throw new IllegalArgumentException("datentraeger must not be null!");
		}
		datentraegers.put(datentraeger.getName(), datentraeger);
		return this;
	}

	public FilmVerwaltung removeDatentraeger(Datentraeger datentraeger) {
		if (datentraeger == null) {
			throw new IllegalArgumentException("datentraeger must not be null!");
		}
		datentraegers.remove(datentraeger.getName());
		return this;
	}

	public Datentraeger getDatentraegerByName(String name) {
		if (name == null || name.trim().length() == 0) {
			throw new IllegalArgumentException(
					"name must not be null or empty!");
		}
		return datentraegers.get(name);
	}

	public void buildDatentraeger(Map<String, Datentraeger> datentraegers) {
		if (datentraegers == null
				|| datentraegers.equals(Collections.emptyList())) {
			throw new IllegalArgumentException(
					"datentraegers must not be null or empty!");
		}
		this.datentraegers = datentraegers;
	}

	public Collection<Datentraeger> getDatentraeger() {
		return Collections.unmodifiableCollection(datentraegers.values());
	}

	public void buildDatentraegers(List<Datentraeger> datentraegers) {
		Iterator<Datentraeger> ite = datentraegers.iterator();
		Datentraeger helper;
		while (ite.hasNext()) {
			helper = ite.next();
			this.datentraegers.put(helper.getName(), helper);
		}

	}
}
